home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
3D Game Programming All in One
/
3D Game Programming All in One Disc.iso
/
3D2E
/
RESOURCES
/
CH6
/
EMAGA6
/
common
/
main.cs
next >
Wrap
Text File
|
2005-11-23
|
7KB
|
296 lines
//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// Load up defaults console values.
exec("./defaults.cs");
//-----------------------------------------------------------------------------
function initCommon()
{
// All mods need the random seed set
setRandomSeed();
// Very basic functions used by everyone
exec("./client/canvas.cs");
exec("./client/audio.cs");
}
function initBaseClient()
{
// Base client functionality
exec("./client/message.cs");
exec("./client/mission.cs");
exec("./client/missionDownload.cs");
exec("./client/actionMap.cs");
// There are also a number of support scripts loaded by the canvas
// when it's first initialized. Check out client/canvas.cs
}
function initBaseServer()
{
// Base server functionality
exec("./server/audio.cs");
exec("./server/server.cs");
exec("./server/message.cs");
exec("./server/commands.cs");
exec("./server/missionInfo.cs");
exec("./server/missionLoad.cs");
exec("./server/missionDownload.cs");
exec("./server/clientConnection.cs");
exec("./server/kickban.cs");
exec("./server/game.cs");
}
//-----------------------------------------------------------------------------
package Common {
function displayHelp() {
Parent::displayHelp();
error(
"Common Mod options:\n"@
" -fullscreen Starts game in full screen mode\n"@
" -windowed Starts game in windowed mode\n"@
" -autoVideo Auto detect video, but prefers OpenGL\n"@
" -openGL Force OpenGL acceleration\n"@
" -directX Force DirectX acceleration\n"@
" -voodoo2 Force Voodoo2 acceleration\n"@
" -noSound Starts game without sound\n"@
" -prefs <configFile> Exec the config file\n"
);
}
function parseArgs()
{
Parent::parseArgs();
// Arguments override defaults...
for (%i = 1; %i < $Game::argc ; %i++)
{
%arg = $Game::argv[%i];
%nextArg = $Game::argv[%i+1];
%hasNextArg = $Game::argc - %i > 1;
switch$ (%arg)
{
//--------------------
case "-fullscreen":
$pref::Video::fullScreen = 1;
$argUsed[%i]++;
//--------------------
case "-windowed":
$pref::Video::fullScreen = 0;
$argUsed[%i]++;
//--------------------
case "-noSound":
error("no support yet");
$argUsed[%i]++;
//--------------------
case "-openGL":
$pref::Video::displayDevice = "OpenGL";
$argUsed[%i]++;
//--------------------
case "-directX":
$pref::Video::displayDevice = "D3D";
$argUsed[%i]++;
//--------------------
case "-voodoo2":
$pref::Video::displayDevice = "Voodoo2";
$argUsed[%i]++;
//--------------------
case "-autoVideo":
$pref::Video::displayDevice = "";
$argUsed[%i]++;
//--------------------
case "-prefs":
$argUsed[%i]++;
if (%hasNextArg) {
exec(%nextArg, true, true);
$argUsed[%i+1]++;
%i++;
}
else
error("Error: Missing Command Line argument. Usage: -prefs <path/script.cs>");
}
}
}
function onStart()
{
Parent::onStart();
echo("\n--------- Initializing MOD: Common ---------");
initCommon();
}
function onExit()
{
echo("Exporting client prefs");
export("$pref::*", "./client/prefs.cs", False);
echo("Exporting server prefs");
export("$Pref::Server::*", "./server/prefs.cs", False);
BanList::Export("./server/banlist.cs");
OpenALShutdown();
Parent::onExit();
}
}; // Common package
activatePackage(Common);
function generateRandomChunkery(%parent)
{
$chunkTestLevel--;
%count = getRandom(100);
for(%i=0; %i<%count; %i++)
{
$chunkCreateCount++;
%obj = new TextChunk()
{
textData = "level= " @ $chunkTestLevel @ ", idx = " @ %i @ $buff;
};
if($chunkTestLevel > 0)
generateRandomChunkery(%obj);
%parent.add(%obj);
// If we're hitting our limit, stop making stuff.
if($chunkCreateCount > $chunkMaxCount)
break;
}
$chunkTestLevel++;
}
function generateBigChunkTest(%buffSize, %chunkCount)
{
$chunkStartTime = getRealTime();
$chunkTestLevel = 10;
$chunkCreateCount = 0;
$chunkMaxCount = %chunkcount; // At most 16 megs of data.
$a = getRealTime();
$buff = "";
while(strlen($buff) < %buffSize)
$buff = $buff @ "klmadskldasjkadlkjsakjlsdjksldakjlkjdlaakjlsdkljaslkjslkjdaslkjd";
$b = getRealTime();
$root = new TextChunk() { textData = "ROOT"; };
$c = getRealTime();
generateRandomChunkery($root);
$d = getRealTime();
echo("Created " @ $chunkCreateCount @ " chunks in " @ $chunkTestLevel @ " levels.");
%file = "common/bigchunktest.chunk";
echo("Saving to '" @ %file @ "'...");
$e = getRealTime();
saveChunkFile($root, %file);
$f = getRealTime();
echo("Done.");
echo("Deleting object hierarchy...");
$root.delete();
echo("Done.");
echo("Loading object hierarchy from '"@%file@"'...");
$g = getRealTime();
$newRoot = loadChunkFile(%file);
$h = getRealTime();
echo("Done.");
echo("chunkCount = " @ $chunkCreateCount @ ", chunkSize=" @ %buffSize);
echo("Generated data = " @ ($chunkCreateCount * %buffSize));
echo("Elapsed time = " @ ((getRealTime() - $chunkStartTime)/1000) @ " sec.");
echo("Buffer init = " @ (($b-$a)/1000) @ " sec.");
echo("chunk gen = " @ (($d-$c)/1000) @ " sec.");
echo("save time = " @ (($f-$e)/1000) @ " sec.");
echo("load time = " @ (($h-$g)/1000) @ " sec.");
return $newRoot;
}
function testchunk()
{
%foo =
new TextChunk()
{
textData = "pony";
new TextChunk()
{
textData = "child1";
new TextChunk()
{
textData = "childQ";
};
};
new TextChunk()
{
textData = "child2";
};
new TextChunk()
{
textData = "child3";
new TextChunk()
{
textData = "childA";
};
new TextChunk()
{
textData = "childB";
};
new TextChunk()
{
textData = "childC";
};
new TextChunk()
{
textData = "childD";
};
new TextChunk()
{
textData = "childE";
};
};
};
saveChunkFile(%foo, "starter.fps/test.chunk");
%foo.delete();
$foo = loadChunkFile("starter.fps/test.chunk");
}